Skip to content

Convert /run-workflow from command to skill - #1065

Merged
jwbron merged 2 commits into
mainfrom
egg/convert-run-workflow-to-skill
Mar 14, 2026
Merged

Convert /run-workflow from command to skill#1065
jwbron merged 2 commits into
mainfrom
egg/convert-run-workflow-to-skill

Conversation

@james-in-a-box

Copy link
Copy Markdown
Contributor

Convert /run-workflow from a command to a skill

PR #1058 added /run-workflow as a command at sandbox/.claude/commands/run-workflow.md.
This converts it to a proper Claude Code skill at skills/run-workflow/SKILL.md so users
can install it globally by copying to ~/.claude/skills/run-workflow/.

Changes:

  • Move sandbox/.claude/commands/run-workflow.mdskills/run-workflow/SKILL.md
  • Add YAML frontmatter (name, description, disable-model-invocation, argument-hint)
  • Update Dockerfile, docker.py, and entrypoint.py to copy and install skills from
    the top-level skills/ directory into sandbox containers
  • Remove /run-workflow entry from commands README

To install globally:

cp -r skills/run-workflow ~/.claude/skills/

Issue: none

Test plan:

  • Verify pytest sandbox/tests/ passes
  • Rebuild sandbox and confirm /run-workflow is available as a skill
  • Copy skills/run-workflow/ to ~/.claude/skills/ and verify it appears in Claude Code

Move run-workflow from sandbox/.claude/commands/ (a command) to
skills/run-workflow/SKILL.md (a proper Claude Code skill). This lets
users install it globally by copying to ~/.claude/skills/.

Add YAML frontmatter: name, description, disable-model-invocation,
argument-hint. The skill content is unchanged.

Update Dockerfile, docker.py, and entrypoint.py to copy and install
skills from the top-level skills/ directory into sandbox containers.

@egg-reviewer egg-reviewer Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No agent-mode design concerns. This is a clean structural change — moving a command to the skill format and adding build/install plumbing. The skill content is unchanged and the infrastructure follows standard file-copy patterns.

— Authored by egg

@james-in-a-box

This comment has been minimized.

@egg-reviewer egg-reviewer Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean, well-structured PR. The build pipeline integration (Dockerfile, docker.py, entrypoint.py) correctly follows existing patterns, and the path logic through the staged build context is sound.

Two non-blocking suggestions:

1. Stale documentation reference

docs/guides/coordinator.md:82 still points to the old path:

See `sandbox/.claude/commands/run-workflow.md` for the full workflow definition.

This file no longer exists after the rename. Update to:

See `skills/run-workflow/SKILL.md` for the full workflow definition.

2. Build resilience when skills/ is missing

In docker.py:create_dockerfile(), if skills/ doesn't exist at the repo root, only a warning is printed — but the Dockerfile's COPY skills/ will hard-fail the build with no useful context. Unlike claude-commands/ (which lives inside sandbox/ and is always present), skills/ is at the repo root and is a new directory, making it more likely to be absent in edge cases (partial checkouts, older branches).

Consider creating an empty directory in the else branch so the Dockerfile COPY succeeds gracefully:

if skills_src.exists():
    _copy_directory_atomic(skills_src, skills_dest, "Claude skills", quiet)
else:
    skills_dest.mkdir(parents=True, exist_ok=True)
    warn("skills directory not found")

— Authored by egg

@james-in-a-box

This comment has been minimized.

@james-in-a-box

This comment has been minimized.

@james-in-a-box james-in-a-box Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Both suggestions addressed in 1abce95:

  1. Stale doc reference — Updated docs/guides/coordinator.md:82 to point to skills/run-workflow/SKILL.md.
  2. Build resilience — Added skills_dest.mkdir(parents=True, exist_ok=True) in the else branch of docker.py:create_dockerfile() so the Dockerfile COPY skills/ succeeds even when the source directory is absent.

— Authored by egg

@egg-reviewer egg-reviewer Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No agent-mode design concerns in the delta. The new commit (1abce95) addresses prior review feedback with a doc path fix and a build resilience improvement — both are mechanical changes with no agent-mode implications.

— Authored by egg

@james-in-a-box

This comment has been minimized.

@egg-reviewer egg-reviewer Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-review of changes since eb231be.

Both suggestions from the previous review have been properly addressed in 1abce95:

  1. Stale doc referencedocs/guides/coordinator.md:82 now correctly points to skills/run-workflow/SKILL.md. No other stale references to the old sandbox/.claude/commands/run-workflow.md path remain in the codebase.

  2. Build resilienceskills_dest.mkdir(parents=True, exist_ok=True) is added in the else branch of docker.py:create_dockerfile(). The Dockerfile's COPY skills/ will now succeed with an empty directory, and the subsequent RUN find ... -type f -exec chmod 644 {} \; is a no-op on an empty directory, so no issues there.

No new concerns.

— Authored by egg

@james-in-a-box

Copy link
Copy Markdown
Contributor Author

egg review completed. View run logs

4 previous review(s) hidden.

@jwbron
jwbron merged commit 185aee4 into main Mar 14, 2026
34 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant